package com.lmt.common.util;

import com.lmt.common.entity.Result;
import com.lmt.common.entity.ErrorCode;

import java.util.HashMap;

/**
 * @author MT-Lin
 */
@SuppressWarnings({"unchecked", "WeakerAccess"})
public class ResultUtil<T> {

    private static HashMap<String, String> errorMessageMap = new HashMap<>();

    public static HashMap<String, String> getErrorMessageMap() {
        return errorMessageMap;
    }

    /**
     * 返回成功信息，不带信息和数据
     * @return Result
     */
    public static Result success(){
        return new Result().setSuccess(Boolean.TRUE);
    }

    /**
     * 返回成功信息，带信息，不带数据
     * @param errorCode 错误代码
     * @return Result
     */
    public static Result success(ErrorCode errorCode){
        return ResultUtil.success().setMessage(errorMessageMap.get(errorCode.getErrorCode()));
    }

    /**
     * 返回成功信息，带数据，不带信息
     * @param data 数据
     * @return Result
     */
    public static Result success(Object data) {
        return ResultUtil.success().setData(data);
    }

    /**
     * 返回成功信息，带信息和数据
     * @param errorCode 错误代码
     * @param data 数据
     * @return Result
     */
    public static Result success(ErrorCode errorCode, Object data){
        return ResultUtil.success(errorCode).setData(data);
    }

    /**
     * 返回失败信息，不带信息
     * @return Result
     */
    public static Result failure(){
        return new Result().setSuccess(Boolean.FALSE);
    }

    /**
     * 返回失败信息，带信息
     * @param errorCode 错误代码
     * @return Result
     */
    public static Result failure(ErrorCode errorCode){
        return ResultUtil.failure().setMessage(errorMessageMap.get(errorCode.toString()));
    }
}
